﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;


namespace decode
{
    public partial class Form1 : Form
    {
        private string chemin;


        

        public Form1()
        {
            //choixDico.Items.Add((object)@"D:\dictionnaire.txt");
            //choixDico.Items.Add((object)@"D:\liste_francais.txt");
            InitializeComponent();
            
        }

        private void decoder_Click(object sender, EventArgs e)
        {


            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            selecteurDeFichier.Filter = "Fichier Texte (*.txt) |*.txt";

            if (selecteurDeFichier.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    chemin = selecteurDeFichier.FileName;

                    Debug.WriteLine("##################### " + chemin);


                    string contenu;
                    StreamReader fichier = new StreamReader(@chemin);
                    contenu = fichier.ReadToEnd();
                   
                    Cl_workflow work = new Cl_workflow(choixDico.SelectedItem.ToString());
                    Cl_decode decode = work.trouverCryptage(contenu);
                    Debug.WriteLine("result " + decode.text);
                    caracteristique.Items.Add("Fichier: " + chemin);
                    caracteristique.Items.Add("Méthode: " + decode.methode);
                    caracteristique.Items.Add("Pourcentage: " + decode.pourcent);
                    caracteristique.Items.Add("Clé: " + decode.cle);
                    caracteristique.Items.Add("Echantillons: " + decode.enchantillon);
                    caracteristique.Items.Add("Decoder: " + decode.text);
                    caracteristique.Items.Add("Temps (s): " + decode.seconde);
                    caracteristique.Items.Add(" ");


                    Cl_decode decodeTout = new Cl_decode(decode.cle, contenu,null,decode.methode);
                    decodeTout.decrypterTout();
                    avant.Text = decodeTout.enchantillon;
                    apres.Text = decodeTout.text;

                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
                }

            }







        }

        private void button1_Click(object sender, EventArgs e)
        {

            


                Cl_decode decodeTout = new Cl_decode(int.Parse(cleCript.Text), avant.Text,null,"Xor");
                decodeTout.decoder();

                apres.Text = decodeTout.text;
            


        }

        private void decoderLive_Click(object sender, EventArgs e)
        {
            


                Cl_decode decodeTout = new Cl_decode(int.Parse(cleCript.Text), avant.Text, null,"Xor");
                decodeTout.decoder();

                apres.Text = decodeTout.text;
            
        }

        private void decodeText_Click(object sender, EventArgs e)
        {
            try
            {
                if (avant.Text.Length != 0)
                {
                    Cl_workflow work = new Cl_workflow(choixDico.SelectedItem.ToString());
                    Cl_decode decode = work.trouverCryptage(avant.Text);
                    Debug.WriteLine("result " + decode.text);
                    caracteristique.Items.Add("Fichier: Text");
                    caracteristique.Items.Add("Méthode: " + decode.methode);
                    caracteristique.Items.Add("Pourcentage: " + decode.pourcent);
                    caracteristique.Items.Add("Clé: " + decode.cle);
                    caracteristique.Items.Add("Echantillons: " + decode.enchantillon);
                    caracteristique.Items.Add("Decoder: " + decode.text);
                    caracteristique.Items.Add("Temps (s): " + decode.seconde);
                    caracteristique.Items.Add(" ");


                    Cl_decode decodeTout = new Cl_decode(decode.cle, avant.Text,null,decode.methode);
                    
                    decodeTout.decrypterTout();
                    avant.Text = decodeTout.enchantillon;
                    apres.Text = decodeTout.text;
                }
                else
                {
                    MessageBox.Show("Error: ton text est vide ");
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
            }

        }

        private void cesar_Click(object sender, EventArgs e)
        {
            Cl_decode decodeTout = new Cl_decode(int.Parse(decalage.Text), avant.Text, null,"Cesar");
            decodeTout.coderCesar();

            apres.Text = decodeTout.text;
        }

        private void decesar_Click(object sender, EventArgs e)
        {
            if (decalage.Text.Length == 0)
            {
                Cl_workflow work = new Cl_workflow(choixDico.SelectedItem.ToString());
                Cl_decode decode = work.trouverCesar(avant.Text);
                Debug.WriteLine("result " + decode.text);
                caracteristique.Items.Add("Fichier: Text");
                caracteristique.Items.Add("Méthode: " + decode.methode);
                caracteristique.Items.Add("Pourcentage: " + decode.pourcent);
                caracteristique.Items.Add("Clé: " + decode.cle);
                caracteristique.Items.Add("Echantillons: " + decode.enchantillon);
                caracteristique.Items.Add("Decoder: " + decode.text);
                caracteristique.Items.Add("Temps (s): " + decode.seconde);
                caracteristique.Items.Add(" ");


                Cl_decode decodeTout = new Cl_decode(decode.cle, avant.Text, null, decode.methode);
                decodeTout.decoderCesar();
                avant.Text = decodeTout.enchantillon;
                apres.Text = decodeTout.text;
            }
            else
            {
                Cl_decode decodeTout = new Cl_decode(int.Parse(decalage.Text), avant.Text, null, "Cesar");
                decodeTout.decoderCesar();
                apres.Text = decodeTout.text;
            }
        }




       

        


    }

   
}
